package UserInterface;

import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;

/**
 * Frame contenant les informations sur la notations des etudiants possibilite
 * de visualiser ou editer une note
 * @author maxou
 *
 */
public class GUINotation extends GUI implements ActionListener{
	
	private PanelNotation panelNotation = new PanelNotation(this);
	private PanelMenuNotation panelMenuNotation = new PanelMenuNotation(this);
	private String DataEcue="null";
	private String codeEcue="null";
	private String nomAnnee="null";
	private String nomDept="null";
	private PanelVisualisation panelVisualisation;
	private JLabel titre;
	private JPanel mainPanel;
	private JButton valider = new JButton("valider");
	private JButton annuler = new JButton("annuler");
	private JPanel pannBoutons = new JPanel();
	private String dataJcombo="null";
	
	
	/**
	 * constructeur
	 */
	public GUINotation()
    {
		super();
		super.deconnexion.addActionListener(this);
		super.gestionApogee.addActionListener(this);
		super.gestionDeLaNotation.addActionListener(this);
		super.accueil.addActionListener(this);
		super.gestionProfils.addActionListener(this);

		mainPanel = new JPanel(new CardLayout());
		mainPanel.add(panelMenuNotation, "panelMenuNotation");
        mainPanel.add(panelNotation, "panelNotation");
        this.conteneurComplement.setLayout(new BorderLayout());

        titre=new JLabel("Gestion de la notation des etudiants");
        this.titre.setFont(new java.awt.Font("Tahoma", 0, 21));
        
        this.conteneurComplement.add(titre,BorderLayout.NORTH);
        this.conteneurComplement.add(mainPanel,BorderLayout.CENTER);

        this.valider.setFont(new java.awt.Font("Tahoma", 0, 15));
        this.annuler.setFont(new java.awt.Font("Tahoma", 0, 15));
        this.pannBoutons.add(valider);
        this.valider.addActionListener(this);
        this.pannBoutons.add(annuler);
        this.annuler.addActionListener(this);
        
        this.conteneurComplement.add(pannBoutons,BorderLayout.SOUTH);
        
        this.titre.setForeground(new java.awt.Color(0, 153, 153));
        this.mainPanel.setPreferredSize(new Dimension(50,0));         
        
        this.fenetre.pack();
        
                
    }


	/**
	 * change le panel courant de la frame GUInotation 
	 * @param pan le panel contenant tous les panels
	 * @param Chaine le nom du JPanel a inserer
	 */
	public void changerJPanel(JPanel pan, String Chaine){
        if(Chaine== "Editer/Visualiser une note"){        	
            ((CardLayout) pan.getLayout()).show(mainPanel, "panelNotation");
        }
        if(Chaine == "Consulter les statistiques" ){
            ((CardLayout) pan.getLayout()).show(mainPanel, "autre");
        }
        if(Chaine == "Visualisation" ){
        	panelVisualisation = new PanelVisualisation(this,DataEcue,codeEcue,nomAnnee, nomDept);
        	mainPanel.add(panelVisualisation, "PanelVisualisation");
        	this.valider.setEnabled(false);
            ((CardLayout) pan.getLayout()).show(mainPanel, "PanelVisualisation");
            
            
        }
        if (Chaine== "autre"){
        	((CardLayout) pan.getLayout()).first(pan);
        }
    }
	/**
	 * action performed
	 */
	public void actionPerformed(ActionEvent e) {
	     
	       if (e.getSource()==valider) {
	    	   if (dataJcombo.equals("Editer/Visualiser une note"))
	    		   changerJPanel(mainPanel,dataJcombo);
	    	   else
	    	   {
	    		   if (dataJcombo.equals("Consulter les statistiques")){
	    			   changerJPanel(mainPanel,"autre");
	    		   }
	    		   else {
	    			   if (!dataJcombo.equals("null") && !dataJcombo.equals("Selectionner votre choix")){
	    				   changerJPanel(mainPanel,"Visualisation");
	    				   this.panelNotation.init();
	    			   }
	    			   else
	    				   changerJPanel(mainPanel,"autre");
	    		   }	    		   
	    	   }
	       }
	       if (e.getSource()==annuler) {
	    	   this.valider.setEnabled(true);
	    	   changerJPanel(mainPanel,"autre");
	    	   
	       }
	     
	       if(e.getSource()==deconnexion){
		        this.fenetre.dispose();
		        Login log = new Login();
		        
		    }
	       if( e.getSource()==gestionDeLaNotation){
	    	   this.fenetre.dispose();
		    	GUINotation suiv = new GUINotation();
		    	
		    }
	       if( e.getSource()==accueil){
	    	   this.fenetre.dispose();
           	Accueil suiv = new Accueil();
           	
		    }
	}


	/**
	 * getter du choix du panel
	 * @return la chaine de caractere qui decidera par la suite le panel a choisir
	 */
	public String getdataJcombo(){
		return this.dataJcombo;
	}
	
	/**
	 *  modification de la chaine de caractere responsable du choix du panel
	 * @param data
	 */
	public void setDataJcombo(String data){
		this.dataJcombo = data;
	}
	
	/**
	 * le contenu de l'ecue choisit dans le panel notation
	 * @return le contenu de l'ecue choisit dans le panel notation
	 */
	public String getdataEcue(){
		return this.DataEcue;
	}
	
	/**
	 * modification du contenu de l'ecue choisit dans le panel notation
	 * @param data
	 */
	public void setDataEcue(String data){
		this.DataEcue = data;
	}
	
	/**
	 * 
	 * @return le code de l'ecue choisit dans le panel notation
	 */
	public String getcodeEcue(){
		return this.codeEcue;
	}
	
	/**
	 * modification du code de l'ecue choisit dans le panel notation
	 * @param data
	 */
	public void setcodeEcue(String data){
		this.codeEcue = data;
	}


	/**
	 * modification du nom de l'annee present dans les panel
	 * @param nomAnnee
	 */
	public void setNomAnnee(String nomAnnee) {
		this.nomAnnee = nomAnnee;
	}


	/**
	 * 
	 * @return le nom de l'annee choisit par l'utilisateur
 	 */
	public String getNomAnnee() {
		return nomAnnee;
	}


	/**
	 * modification du nom du departement contenu dans les panel de notation
	 * @param nomDept
	 */
	public void setNomDept(String nomDept) {
		this.nomDept = nomDept;
	}


	/**
	 * recupere le nom du departement contenu dans les panel de notation
	 * @return
	 */
	public String getNomDept() {
		return nomDept;
	}
	
}



